<?php


require_once 'classes/Groupe.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';
require_once '../config/config.php';

/**
 * Classe du service CRUD pour la gestion des Groupes
 * 
 * @author Manixab Billy
 */

class SCgroupe {
    
    private $db;
    
    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
    }
    
    /**
     * Ajoute un groupe
     * @param unGroue un groupe à ajouter
     * @return Message
     */
    public function ajouter($unGroupe) {
        try {
            $query = $this->db->prepare("INSERT INTO groupe ".
                    "(nom) VALUES (:nom)");
            $query->execute(array(
                'nom'       => $unGroupe->getNom()
            ));
            
        }
        catch(PDOException $e) {
            return new Message("Groupe non ajouté: ".$e->getMessage());
        }
        return $unGroupe;
    }
    
    /** 
     * Modifier un groupe
     * @param unGroupe un groupe à modifier
     * @param nvGroupe le nouveau groupe
     * @return Message
     */
    public function modifier($unGroupe, $nvGroupe) {
        try {
            $query = "UPDATE groupe SET
                nom = '".$nvGroupe->getNom()."'
                    WHERE nom ='".$unGroupe->getNom()."';";
            $this->db->query($query);

        }
        catch(PDOException $e) {
            return new Message("Groupe non modifié: ".$e->getMessage());
        }
        return $nvGroupe;
    }
    
    /**
     * Supprimer un groupe
     * @param unGroue un groupe à supprimer
     * @return Message
     */
    public function supprimer($unGroupe) {
        try {
            $query = "DELETE from groupe WHERE nom = '".$unGroupe."';";
                
            $this->db->exec($query);
            $message = new Message("Groupe supprimé");
        }
        catch(PDOException $e) {
            $message = new Message("Groupe non supprimé: ".$e->getMessage());
        }
        return $message;
    }
    
    /**
     * @param unGroupe Groupe de recherche sous forme d'objet Groupe
     * @return un tableau d'objet Groupe
     */
    public function lister($unGroupe) {
        try {
            $query = "SELECT * FROM groupe ";
            $query_where = "WHERE";
            if($unGroupe!=NULL) {
                if ($unGroupe->getNom() != NULL) {
                    $query_where .=" nom = '".$unGroupe->getNom()."';";
                    $query.=$query_where;
                }
            }
          
            $query .= ";";
            $lesGroupesTrouves = null;
            $unGroupeLu = null;
            $result=$this->db->query($query);
            
            while($row=$result->fetch()) {
                $unGroupeLu = new Groupe($row["nom"]);
                $lesGroupesTrouves[] = $unGroupeLu;
            }
        }
        catch(PDOException $e) {
            print($e->getMessage());
        }
        return $lesGroupesTrouves;
    }
}
?>
